package com.zw.mes.module.transpositionManager.service;


import com.zw.mes.common.JsonResult;
import com.zw.mes.module.system.service.LogService;
import com.zw.mes.module.transpositionManager.mapper.TranspositionHalfStoreRecordMapper;
import com.zw.mes.module.transpositionManager.model.FlowTransModel;
import com.zw.mes.module.transpositionManager.model.HalfStoreRecordModel;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @className: TranspositionHalfStoreRecordService
 * @description: 半成品库出入库记录业务逻辑层
 * @author： 徐一贺 18341916590
 * @date： 2021/5/6 8:42
 * @office: 智能控制设计科
 * @research institute： 智能控制设计所
 * @department： 机械设计院
 * @company: 辽宁忠旺机械设备制造有限公司
 * @group： 忠旺集团
 * @version: 1.0
 */
@Log4j2
@Service
public class TranspositionHalfStoreRecordService{
    @Autowired
    private TranspositionHalfStoreRecordMapper mapper;

    @Autowired
    private LogService logService;

    @Autowired
    private TranspositionApplyCheckService transpositionApplyCheckService;

    /**
     * @methodName: findHalfStoreRecordModelByParam
     * @description: 获取半成品库出入库记录数据
     * @param: param
     * @return： java.util.List<com.zw.mes.module.transpositionManager.model.HalfStoreRecordModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/6 8:57
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    public List<HalfStoreRecordModel> findHalfStoreRecordModelByParam(HalfStoreRecordModel param) {
        return mapper.findHalfStoreRecordModelByParam(param);
    }

    /**
     * @methodName: exitStore
     * @description: 退库
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/5/6 10:03
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public JsonResult exitStore(HalfStoreRecordModel param) {
        JsonResult jsonResult = new JsonResult();
        try{
            FlowTransModel flowTransModel = mapper.getFlowTransModelByRecordId(param.getId());

            jsonResult =  transpositionApplyCheckService.cancelCheck(flowTransModel);
            if(jsonResult.getType() == JsonResult.ResultType.SUCCESS){
                jsonResult.setType(JsonResult.ResultType.SUCCESS);
                jsonResult.setMsg("退库成功！");
            }else{
                jsonResult.setType(JsonResult.ResultType.ERROR);
                jsonResult.setMsg(jsonResult.getMsg().replace("撤销","退库"));
            }
        }catch (Exception e){
            e.printStackTrace();
            log.error("半成品库出入库记录退库异常："+e.getMessage());
            jsonResult.setType(JsonResult.ResultType.ERROR);
            jsonResult.setMsg("退库失败！");
        }
        return jsonResult;
    }
}
